package com.tsp_tux.demo.Util;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author 沈育洋
 */
public class JieBa {

    /**
     * @param string 所要进行关键词提取的文章
     * @return List<String> 为关键词的List
     */
    private static List<String> execPython(String string) {
        Process proc;
        try {
            //第一个处为你系统中python的安装位置；
            //第二个为想要执行的python文件位置；
            //之后的为想要传的参数
            File file = new File("python_file/jiebaIml.py");
            String path = file.getAbsolutePath();
            String[] args1 = new String[]{"python", path, string};
            //proc = Runtime.getRuntime().exec("python.exe python.py ");// 执行py文件 不传参数
            proc = Runtime.getRuntime().exec(args1);
            //用输入输出流来截取结果
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), StandardCharsets.UTF_8));
            String line = in.readLine();
            if (line != null) {
                List<String> s = new ArrayList<>();
                String pattern = "[\\u4e00-\\u9fa5]+";
                Pattern p = Pattern.compile(pattern);
                Matcher m = p.matcher(line);
                while (m.find()) {
                    s.add(m.group());
                }
                return s;
            }
            in.close();
            proc.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * @author 刘海生
     *
     * 获取关键词，并将list用#连接成字符串形式返回
     * @param content 文章内容
     * @return String
     */
    public static String getKeyWords(String content){
        StringBuilder builder = new StringBuilder();
        List<String> list = execPython(content);

        if (list==null)return "";
        for (String str:list) {
            builder.append(str).append("#");
        }
        if (builder.length()!=0) builder.deleteCharAt(builder.length() - 1);//删掉最后的#

        return builder.toString();
    }

    public static void main(String[] args) {
        String str = "Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。\n" +
                " \n" +
                " Java 可运行于多个平台，如 Windows, Mac OS 及其他多种 UNIX 版本的系统。\n" +
                " \n" +
                " 本教程通过简单的实例将让大家更好的了解 Java 编程语言。\n" +
                " \n" +
                " 移动操作系统 Android 大部分的代码采用 Java 编程语言编程。";
        System.out.println(getKeyWords(str));
    }
}
